package com.bnz.portal.service.impl;

import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bnz.portal.dao.ContentDao;
import com.bnz.portal.entity.ContentEntity;
import com.bnz.portal.service.ContentService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class ContentServiceImpl extends ServiceImpl<ContentDao, ContentEntity> implements ContentService {
    // 引入redis
    @Autowired
    private StringRedisTemplate redisTemplate;
    // 1. 查询所有广告列表，然后放到redis中
    @Override
    public List<ContentEntity> findAll() {
        // 1.1 给广告列表一个默认值null
        List<ContentEntity> contentEntities = null;
        // 1.2 直接从redis中查询广告列表
        String contents = redisTemplate.opsForValue().get("contentList");
        // 1.3 如果redis里面没有就从数据库中查询
        if(StringUtils.isBlank(contents)){
            System.out.println("正在从数据库中查询商品。。。");
            //1.3.1 从数据库中得到数据
            contentEntities = this.list();
            //1.3.2 将数据库中查询到的广告列表放到redis中
            redisTemplate.opsForValue().set("contentList",JSON.toJSONString(contentEntities));
        }else{
            // 1.4 redis里面已经有数据了，将字符串类型数据转换为List对象
            contentEntities = JSON.parseArray(contents,ContentEntity.class);
        }
        return contentEntities;
    }
}
